package org.study.bookmanager.io.reponse;

import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.databind.ObjectMapper;

public class RestBean {
    public int status;
    public String message;
    public Object data;

    public RestBean(int status, String message, Object data) {
        this.status = status;
        this.message = message;
        this.data = data;
    }

    public static  String success(Object data) {
        return new RestBean(200, "", data).asJsonString();
    }

    public static String failure(int status, String message) {
        return new RestBean(status, message, null).asJsonString();
    }

    public String asJsonString() {
        try {
            return new ObjectMapper().writeValueAsString(this);
        } catch (JsonProcessingException e) {
            e.printStackTrace();
            return "{}";
        }
    }

    public static String handlerError(Object data) {
        if(data instanceof Code code) {
            return failure(code.ordinal(),code.name());
        }else if(data == null){
            return failure(0,"服务错误");
        }
        return null;
    }

    public static String ok="";
    public static String unImpl="unImpl";

    public enum  Code{
        服务错误,
        用户名或密码错误,
        不存在的用户,
        用户名已存在,
        用户名为空,
        密码为空,
        密码长度小于六个字符,
        用户登陆状态异常,
        图书信息已存在,
        图书信息不存在,
        借阅记录不存在,
        请填写预期归还时间,
        预期归还时间不能早于现在,
        图书已归还,
        预约已完成,
        预约记录不存在,
        图书已借完,
        请填写图书标题,
        请填写ISBN,
        请填写条形码,
    }
}